# _*_ coding: UTF-8 _*_
# @Time     : 2021/2/23 下午 03:16
# @Author   : Li Jie
# @Site     : http://www.hzdledu.com/
# @File     : process_test2.py
# @Software : PyCharm

from multiprocessing import Process
import os
import time


# 子进程调用的方法
def foo1(interval):
    print(f'子进程{os.getpid()}开始执行，父进程为{os.getppid()}')
    t_start = time.time()  # 记录子进程开始时间
    time.sleep(interval)  # 子进程会被暂停interval秒
    t_end = time.time()  # 记录子进程结束时间
    print(f'子进程{os.getpid()}结束执行，执行时间为:{t_end - t_start:.2f}秒')


def process_main():
    print('-------------父进程开始执行-------------')
    print(f'父进程PID:{os.getpid()}')  # 打印主进程PID
    p1 = Process(target=foo1, args=(1,))  # 实例化子进程p1
    p2 = Process(target=foo1, name='hzdl', args=(2,))  # 实例化子进程p2
    p1.start()  # 启动子进程p1
    p2.start()  # 启动子进程p2
    # 同时父进程继续往下执行，如果p1、p2进程还在执行，将会返回True
    print(f'p1还在执行:{p1.is_alive()}')
    print(f'p2还在执行:{p2.is_alive()}')
    # 输出p1和p2进程的名字和PID
    print(f'p1:{p1.name}:{p1.pid}')
    print(f'p2:{p2.name}:{p2.pid}')
    # 等待子进程结束
    p1.join()  # 等待p1子进程结束
    p2.join()  # 等待p2子进程结束
    print('-------------父进程结束执行-------------')


if __name__ == '__main__':
    process_main()
